home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-07-20 | 1.5 KB | 77 lines | [TEXT/CWIE] |
- //Copyright (c) 1997 Aidan Cully
- //All rights reserved
-
- #include "CLModalWindow.h"
- #include "CLModalLayer.h"
- #include "CLMouseHandler.h"
-
- TModalWindow::TModalWindow( short resID, TLayoutLeaf *content ):
- TBaseWindow( resID, gModalWindowLayer, content )
- {
- }
-
- BOOLEAN TModalWindow::RunSelf()
- {
- return( true );
- }
-
- BOOLEAN TModalWindow::Run()
- {
- if( RunSelf() ) {
- TBaseWindow::Init();
- if( TBaseWindow::DoShowWindow()==kWindowSuccess )
- return( true );
- QuitSelf();
- }
- return( false );
- }
-
- SInt8 TModalWindow::DoHideWindow()
- {
- if( AttemptQuit() )
- return( kWindowSuccess );
- return( 1 );
- }
-
- void TModalWindow::Quit()
- {
- mOpen= 0;
- mLayer->RemoveWindow( this );
- MEventDispatcher::Quit();
- TMouseHandler::SGetMouse()->SetListener(0);
- }
-
- void TModalWindow::CalcMouseMove( const Point &pt, RgnHandle rgn ) {
- RgnHandle strucRgn, above;
-
- strucRgn= ::NewRgn();
- above= ::NewRgn();
- ClipAbove( above );
- ::GetWindowStructureRgn( mWindow, strucRgn );
- ::SectRgn( strucRgn, above, strucRgn );
- ::DiffRgn( above, strucRgn, above );
- Boolean ret= ::PtInRgn( pt, strucRgn );
- if( ret ) {
- ::DisposeRgn( above );
- ::DisposeRgn( strucRgn );
- TBaseWindow::CalcMouseMove( pt, rgn );
- } else {
- ::CopyRgn( above, rgn );
- TMouseHandler::SGetMouse()->SetListener( this );
- ::DisposeRgn( above );
- ::DisposeRgn( strucRgn );
- }
- }
-
- void TModalWindow::HandleMouse( TMouseButtonEvent *ev )
- {
- WindowRef window;
- short partCode;
-
- partCode= FindWindow( ev->where, &window );
- if( window!=mWindow ) {
- if( ev->button )
- ::SysBeep(0);
- } else
- DoMouseDown( partCode, ev );
- }